package sh.spring;

import sh.base.aop.util.ScannerUtil;
import sh.base.config.ConfigManager;

import java.util.Set;

/**
 * 注解的上线文，可以自动扫描注解
 * @author lqq
 * @date 2019/2/23
 */
public class AnnotationApplicationContext extends BeanFactoryImpl implements ApplicationContext {



    public AnnotationApplicationContext(){
        init();
    }

    @Override
    public void init() {

    //    加载配置文件
        ConfigManager configManager = this.getBean(ConfigManager.class);
        configManager.init(Const.DEFAULT_PROPERTY_FILE_NAME);

        String scanPackage = configManager.getProperties().getProperty(Const.PropertyKey.PACKAGES_TO_SCAN);
    //   初始化，把对应的bean都生成了
    //    初始化扫描的类，当前只扫描@Service注解的类
        Set<Class<?>> services = ScannerUtil.getClasses(scanPackage, true);
        for(Class<?> clazz : services){
            getBean(clazz);
        }

    }
}
